package van.planifolia.demo01;

/**
 * Created by Intellij IDEA<br>
 *
 * @author Planifolia.Van
 * @version 1.0
 * @date 2022/10/26 16:27
 */
// 压制警告注解，这个注解会让代码中应该提示的警告信息不在提示
@SuppressWarnings("all")
public class AnnotationDemo {
    private String name;

    // 首先是 @Override注解他标注着一个方法是否被重写
    @Override
    public String toString() {
        return "AnnotationDemo{" +
                "name='" + name + '\'' +
                '}';
    }
    // 这个注解是注明这个方法已经过时了不推荐使用了
    @Deprecated
    public boolean equal(String name){
        // 就如同这行代码，本来我们对字符串使用==进行比较是必然会爆出警告的但是，因为我们使用了SuppressWarnings他就不会爆出异常
        return this.name == name;
    }
}
// 函数式接口注解，标注这个接口是函数式接口只允许有一个抽象方法
@FunctionalInterface
interface Fun{
    int run();
}
class Run{
    public static void main(String[] args) {
        AnnotationDemo annotationDemo = new AnnotationDemo();
        // 看我们在这调用这个方法的时候就会被画上横线表示这个方法已经过时了
        annotationDemo.equal("123");

        // 使用拉姆得表达式可以很优雅的实现函数式接口是实现
        Fun fun = ()->{
          int a = 10;
          return a*a;
        };
        System.out.println(fun.run());
    }
}

